Request 和 RequestInit
Request 类表示一次 HTTP 请求的完整配置。
它可作为 fetch() 方法的参数使用,也可用于克隆、修改或重试请求。
在 Scripting 中,Request 的行为与浏览器 Fetch API 中的同名接口一致,但额外支持了原生扩展功能,包括:
- 支持二进制
Data类型作为请求体 - 支持自定义重定向处理
- 支持请求超时、取消、与调试标签
- 支持允许不安全请求(HTTP 请求)
类定义
构造函数
new Request(input: string | Request, init?: RequestInit)
创建一个新的 Request 实例。
可通过字符串 URL 或现有的 Request 对象来构造。
参数
属性
方法
clone(): Request
创建并返回当前请求对象的副本。 克隆后的对象可安全修改其属性(如 headers、body)而不影响原始请求。
示例
使用示例
示例 1:创建一个简单的 Request 对象
示例 2:带请求体的 POST 请求
示例 3:克隆并修改请求
RequestInit 类型
RequestInit 是一个用于配置请求参数的对象类型,常用于 fetch() 或 Request 构造函数中。
它与浏览器的标准 Fetch API 相同,但 Scripting 扩展了若干字段。
类型定义
字段说明
与 fetch() 的关系
RequestInit 是 fetch() 的第二个参数,用于定义请求配置:
与其他类的关系
示例
示例 1:使用自定义重定向回调
示例 2:允许不安全请求
示例 3:带调试标签的请求
以下是 handleRedirect 回调中 RedirectRequest 接口的中文说明文档,可直接插入至 Request 类文档的相关部分,用于解释自定义重定向逻辑的参数结构和用法。
RedirectRequest 接口说明
当请求发生 重定向 (Redirect) 时,若在 Request 或 RequestInit 中设置了 handleRedirect 回调函数,系统会在跳转前调用该回调。
handleRedirect 的参数类型为 RedirectRequest,用于描述即将执行的重定向请求的完整信息。
你可以在回调中检查该对象的属性,并决定是否允许继续重定向,或修改请求后再继续。
接口定义
字段说明
使用场景
通过 handleRedirect 回调,你可以:
- 检查重定向目标地址是否安全或符合业务逻辑。
- 修改重定向请求(如添加自定义头部、调整方法或携带 Token)。
- 阻止不必要或可疑的重定向。
当回调返回:
- 一个
RedirectRequest对象 → 表示允许重定向,并使用你返回的对象继续请求。 null→ 表示阻止此次重定向,fetch()将在当前响应结束。
示例:拦截与控制重定向请求
示例:修改重定向请求方法与体
注意事项
- 若未设置
handleRedirect,所有重定向将默认自动执行。 - 若设置了
handleRedirect且返回null,fetch()不会继续跳转。 - 该机制不会自动携带 Cookie,需要手动在
RedirectRequest.cookies中读取并决定是否传递。 - 修改
RedirectRequest返回后,系统会基于修改后的内容重新发起请求。
小结
Request 与 RequestInit 是 Scripting 网络请求系统的核心基础:
Request封装了完整的 HTTP 请求对象,可复用、克隆与传递。RequestInit定义请求参数,提供灵活的初始化方式。- 二者与
fetch()、Response、Headers、Data、FormData等类型紧密配合。
